package bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import mensagem.MsgPais;
import session.SessionPais;
import entity.Pais;

@ManagedBean
@SessionScoped
public class BeanPais {

	private Pais pais = new Pais();

	private Pais selected = new Pais();

	private Pais filtro = new Pais();

	private List<Pais> paises = new ArrayList<Pais>();

	private SessionPais session = new SessionPais();

	// //////////////////////////CONSTRUCTOR//////////////////////////////////////
	// ///////////////////////////////////////////////////////////////////////////

	public BeanPais() throws Exception {
		// this.carregaPais();
	}

	// //////////////////////////CONSTRUCTOR//////////////////////////////////////
	// ///////////////////////////////////////////////////////////////////////////

	public SessionPais getSession() {
		return session;
	}

	public void setSession(SessionPais session) {
		this.session = session;
	}

	public Pais getFiltro() {
		return filtro;
	}

	public void setFiltro(Pais filtro) {
		this.filtro = filtro;
	}

	public Pais getSelected() {
		return selected;
	}

	public void setSelected(Pais selected) {
		this.selected = selected;
	}

	public List<Pais> getPaises() {
		return paises;
	}

	public void setPaises(List<Pais> paises) {
		this.paises = paises;
	}

	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	// ******************************METODOS******************************
	// ***********************************************************************************
	// ******************************************************************************************

	public void reinit(boolean update) {
		if (update) {
			this.filtro = new Pais();
			this.selected = new Pais();
			this.paises = new ArrayList<Pais>();
		} else {
			this.pais = new Pais();
			this.filtro = new Pais();
			this.selected = new Pais();
			this.paises = new ArrayList<Pais>();
		}

	}

	public String save() throws Exception {
		if (this.pais.getId() != null) {
			return this.update();
		}
		if (this.session.save(pais)) {
			this.reinit(false);
			return MsgPais.msgSave();
		}
		return "";
	}

	public String update() throws Exception {
		this.session.update(this.pais);
		this.reinit(true);
		return MsgPais.msgUpdate();
	}

	public String remove() {
		try {
			this.session.remove(this.selected);
			this.reinit(false);
			return MsgPais.msgRemove();
		} catch (Exception e) {
			return MsgPais.msgRemove();
		}
	}

	public void carregaPais() throws Exception {
		this.paises = this.session.getController().findList(new Pais());
	}

	public void find() throws Exception {
		this.paises = this.session.getController().findList(this.filtro);
	}

}